package com.gougou.pic.util;

import com.gougou.pic.entity.PicUploadResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;

/**
 * 文件上传工具包
 */
public class FileUtils {



    /**********************************
     *保存图片根方法
     *
     * @param file 文件
     * @param path 文件存放路径
     * @param fileName 源文件名
     * @return
     * ******************************
     */
    public static boolean upload(MultipartFile file, String path, String fileName){

        // 生成新的文件名
        //String realPath = path + "/" + FileNameUtils.getFileName(fileName);

        //使用原文件名
        String realPath = path + "/" + fileName;

        File dest = new File(realPath);

        //判断文件父目录是否存在
        if(!dest.getParentFile().exists()){
            dest.getParentFile().mkdir();
        }

        try {
            //保存文件
            file.transferTo(dest);
            return true;
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }

    }

    /********************************
     *
     * 封装图片返回类型
     *
     * @param File
     * @param path
     * @param filename
     * @return
     * ********************************
     */
    public static PicUploadResult parsePicResult(File File,String ROOT_URL, String path, String filename){
        PicUploadResult fileUploadResult = new PicUploadResult();
        boolean isLegal = false;
        try {

            BufferedImage image = ImageIO.read(File);
            if (image != null) {
                //尝试封装长，高
                fileUploadResult.setWidth(image.getWidth() + "");
                fileUploadResult.setHeight(image.getHeight() + "");
                isLegal = true;
            }
        } catch (IOException e) {
        }

        //封装检测状态
        fileUploadResult.setError(isLegal ? 0 : 1);

        if (!isLegal) {
            // 不合法，将磁盘上的文件删除
            File.delete();
        }
        //封装访问地址
        fileUploadResult.setUrl(ROOT_URL+path+"/"+filename);

        return fileUploadResult;
    }





}